package configs

import (
	"bytes"
	_ "embed"
	"gitee.com/youbeiwuhuan/gin-practice/gin-simple-zap/tools/gins"
	"gitee.com/youbeiwuhuan/gin-practice/gin-simple-zap/tools/zaps"
	"github.com/spf13/viper"
)

//go:embed config.yaml
var f []byte

type Configuration struct {
	Zap zaps.ZapConfig `mapstructure:"zap"`
	Gin gins.GinConfig `mapstructure:"gin"`
}

func loadDefault() *viper.Viper {
	//embed 方式 ,作为默认配置项
	vp := viper.New()
	//开始读取环境变量，如果没有调用这个函数，则下面无法读取到path的值
	vp.AutomaticEnv()
	vp.SetConfigType("yaml")
	vp.ReadConfig(bytes.NewReader(f))
	vp.WatchConfig()

	// 配置读到结构体  Viper 默认将 **结构体字段名转换为小写 + 下划线** 的形式匹配 YAML 键。

	return vp
}

func Load() *viper.Viper {

	return loadDefault()
}
